home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 110 / EnigmaAmiga110CD.iso / dalla rivista / host contacted / awinquake.readme < prev    next >
Text File  |  2000-03-19  |  12KB  |  382 lines

  1. Short:    68k and PPC ports of winquake, v0.8
  2. Author:   Peter McGavin  (p.mcgavin@irl.cri.nz)
  3. Uploader: Peter McGavin  (p.mcgavin@irl.cri.nz)
  4. Version:  0.8
  5. Type:     game/shoot
  6.  
  7.  
  8.  
  9.                             awinquake 0.8                    3 Mar 2000
  10.                             -------------
  11.  
  12.  
  13. This archive contains Amiga 68k and PPC ports of winquake, compiled as
  14. directly as possible from ID Software's winquake source code.
  15.  
  16. On 24th Dec 1999 I learnt that ID Software had released the source
  17. code of winquake, glquake, quakeworld and glquakeworld (on 21st Dec
  18. 1999) under GNU Public License (GPL) and made them available by ftp.
  19. So I downloaded them and tried compiling winquake with SAS/C 6.58 for
  20. the Amiga.  This archive represents my results after about 10 evenings
  21. and 4 days.
  22.  
  23. winquake is well written and extremely portable, so it didn't take
  24. long to get it working on my Amiga by cutting and pasting code from
  25. other projects.  I expect other people are doing better ports, e.g,
  26. Frank Wille and Steffen Haeuser.  However I hadn't seen any legal ones
  27. when I started, and as it didn't take very long to get a base version
  28. running, I thought I'd release what I've done.  If you're doing your
  29. own port, feel free to take source code from mine, but remember
  30. there's no guarantee.
  31.  
  32. Sorry I haven't even looked at the glquake and quakeworld source code
  33. yet.
  34.  
  35. You can get all the original ID Software quake source from:
  36.  
  37.    ftp://ftp.cdrom.com/pub/idgames/idstuff/source/q1source.zip
  38.  
  39. Source code of awinquake is necessarily in a separate archive on
  40. Aminet.  The GPL license requires that the source code of all
  41. modifications to Quake is made freely available.
  42.  
  43. Thanks to John Selck, Niels Froehling and others for the source code
  44. they sent me for inclusion in awinquake, and sorry I haven't done very
  45. much with it yet.
  46.  
  47.  
  48.  
  49. FEATURES:
  50. ---------
  51.  
  52. Several versions are provided, all compiled from the same source, but
  53. with different compilers.  They are:
  54.  
  55.         awinquake:       SAS/C, 68020+
  56.         awinquakeppc:    SAS/C+gcc, PPC, PowerUp or WarpOS+ppclibemu
  57.         awinquakewos:    StormC, PPC, WarpOS
  58.         awinquakevbcc:   vbcc, PPC, WarpOS
  59.  
  60. Also, Jarmo Laakkonen compiled awinquake with EGCS for WarpOS and
  61. uploaded his version to Aminet as game/shoot/WarpQuake.lha.
  62.  
  63. All versions are OS-friendly and multitask.
  64.  
  65. All versions put up an ASL requester for the ScreenMode.
  66.  
  67. PPC versions use Joseph Fenton's PPC c2p routine from ADoomPPC and
  68. triple buffering in AGA modes.  68k version uses Aki Laukkanen's c2p
  69. routine in AGA modes.
  70.  
  71. Stereo sound effects are included using either audio.device or AHI.
  72. Also CD audio for music works if you use ClickBoom's AmigaQuake CDROM.
  73. You need cdplayer.library (from Aminet) for this.
  74.  
  75. Networking for TCP/IP is included.
  76.  
  77. awinquakeppc is mostly compiled with SAS/C scppc.  However, the
  78. innermost rendering routines are compiled with ppc-amigaos-gcc.  This
  79. results in a small speedup (about 3%) over compiling everything with
  80. scppc.
  81.  
  82. My modified source code should still compile for Linux (APUS),
  83. Solaris, Win95, etc, with no changes --- untested.
  84.  
  85. Speeds up to 41.5 fps have been observed for "timedemo demo2" in
  86. 320x200 on a 233 MHz PPC Amiga 3000 with CyberVisionPPC.
  87.  
  88. I added a -fps option, but see the note below about bus speed before
  89. you believe the numbers you see.
  90.  
  91.  
  92.  
  93. LIMITATIONS:
  94. ------------
  95.  
  96. My 68k version is much slower than ClickBoom's commercial version.  I
  97. use my 68k version primarily for debugging.  In fact I don't recommend
  98. the 68k version at all.  Buy Clickboom's version.
  99.  
  100. No joystick yet, sorry.
  101.  
  102. Untested code.  Your mileage may vary.
  103.  
  104.  
  105.  
  106. REQUIREMENTS:
  107. -------------
  108.  
  109. A 68020+ Amiga running at least Kickstart 3.0, with at least about 16
  110. Mb of fastmem.
  111.  
  112. An FPU is required.
  113.  
  114. You need either a gfx-card or AGA.  ECS alone is not sufficient.
  115.  
  116. A TCP/IP stack is required for networking, e.g, AmiTCP or Miami.
  117. An ethernet card is strongly recommended.
  118.  
  119. I use a stack size of 500000 bytes.  I'm not sure what the minimum
  120. stack size is.  150000 bytes is definitely too small.
  121.  
  122. An MMU is neither required nor used.
  123.  
  124. You need the Quake 1 PAK files and other support files from either a
  125. commercial or shareware version of Quake.  Assuming you've already
  126. installed AmigaQuake or a PC version, put awinquake or awinquakeppc in
  127. the same directory as the original quake executable.
  128.  
  129. For CD audio, you need cdplayer.library from Aminet and an original
  130. Quake CDROM.  The game searches for Clickboom's CDROM --- volume name
  131. "QUAKE".  If your CDROM is labelled differently, you can use the
  132. environment variables quake/scsi_device and quake/scsi_unit instead.
  133. For example:
  134.  
  135.         setenv quake/scsi_device z3scsi.device
  136.         setenv quake/scsi_unit   5
  137.  
  138.  
  139.  
  140. MOUSE AND JOYPAD:
  141. -----------------
  142.  
  143. To enable mouse control, use -mouse.  To leave the mouse pointer
  144. visible, use -mousepointer.
  145.  
  146. To enable CD32 joypad control, use -joypad.  You must have
  147. lowlevel.library for this.  You need to bind the buttons yourself.
  148. The buttons are located in AUX1 - AUX11.
  149.  
  150. AUX1  = left
  151. AUX2  = right
  152. AUX3  = up
  153. AUX4  = down
  154. AUX5  = red
  155. AUX6  = green
  156. AUX7  = yellow
  157. AUX8  = blue
  158. AUX9  = play
  159. AUX10 = forward
  160. AUX11 = reverse
  161.  
  162. Binding example: In Quake console type, BIND AUX5 "+ATTACK".
  163.  
  164. Thanks to Jarmo Laakkonen for writing the joypad code.
  165.  
  166.  
  167.  
  168. AHI:
  169. ----
  170.  
  171. To enable AHI audio, use -ahi, otherwise awinquake uses two 8-bit
  172. audio.device channels by default.  You must also have ahi.library
  173. installed for AHI.  With -ahi, awinquake sends a 16-bit stereo audio
  174. stream to AHI unit 0.
  175.  
  176. Use AHI prefs to select the AHI driver for unit 0.  If you installed
  177. AHI properly, you can enter "AHI" at a CLI prompt to start AHI prefs.
  178.  
  179. Unfortunately AHI slows down awinquake quite a lot, especially with
  180. the HiFi stereo++ AHI drivers.
  181.  
  182.  
  183.  
  184. KNOWN BUGS, PROBLEMS AND SOLUTIONS:
  185. -----------------------------------
  186.  
  187. If you get the message "file is not executable" when you start
  188. awinquakeppc, try using runelf, or run another program that uses
  189. ppc.library first.  Also, make sure the executable bit is set in the
  190. file protection mask of awinquakeppc.  If that still fails, try a more
  191. recent version of ppc.library, or use WarpOS + ppclibemu.
  192.  
  193. Random crashes, especially crashes on exit, may be caused by stack too
  194. small.  Set a large stack, say 500000 bytes, especially if networking.
  195. Use the AmigaOS STACK command to set the stack size before you start
  196. awinquake or awinquakeppc.
  197.  
  198. The most buggy version is awinquakevbcc.  I suggest using awinquakeppc,
  199. awinquakewos or Jarmo Laakkonen's WarpQuake instead.
  200.  
  201. There is a -mem option for allocating a different size heap than the
  202. default.  For example, "awinquakeppc -mem 24" starts awinquake with a
  203. 24 Megabyte heap.  The default size is 8 Megabytes.  Some Quake
  204. add-ons, such as Malice, require a larger heap.  Also, a larger heap
  205. size reduces disk accesses.  If you are very short of memory, try a
  206. smaller heap, e.g, "awinquakeppc -mem 6".
  207.  
  208. The game may "stick" for a few seconds every few minutes when the
  209. cdplayer loops.  Sorry, no solution for this yet except -nocdaudio.
  210.  
  211. If the game reports the wrong bus speed at the start, as could happen
  212. with WarpOS+ppclibemu, then the game will run at the wrong speed and
  213. audio may sound broken up.  Furthermore, all reported times and fps
  214. ratings (e.g, for timedemo demo2) will be wrong.  Override with, e.g
  215. (for 66 MHz bus)
  216.  
  217.         awinquakeppc -bus 66666667
  218.  
  219. If the game takes too long to load, try using the AmigaOS ADDBUFFERS
  220. command.  I'm told that changing from FFS to PFS3 is an even faster
  221. alternative.
  222.  
  223. The TCP/IP networking code seems to be rather flaky.  I successfully
  224. used it over ethernet with other Amigas running awinquakeppc, other
  225. Amigas running Clickboom's Quake and other PCs running Quake 1.06.
  226. (awinquake is a port of winquake 1.09.)  However, sometimes the server
  227. wasn't seen by the client looking for it.  In that case the solution
  228. is to type in the IP number of the server.  Sometimes I wasn't able to
  229. make a connection at all, or when I made a connection, the players
  230. couldn't move.  Then, when I tried again later, it worked just fine.
  231.  
  232.  
  233.  
  234. SPEED:
  235. ------
  236.  
  237. On my A3000 + 233MHz PPC + CVisionPPC, the fastest combination is
  238. awinquakeppc + ppc.library.  That's mainly because only awinquakeppc
  239. has some hand-optimised assembly code.  Jarmo Laakkonen's WarpQuake +
  240. WarpOS is nearly as fast with -wpa8.  WarpQuake's chunkyppc.library
  241. support is slower than WarpQuake -wpa8 on my system.
  242.  
  243.  
  244.  
  245. ANOTHER QUAKE PORT:
  246. -------------------
  247.  
  248. Another excellent Quake port by Steffen Haeuser, Frank Wille and
  249. others is available from http://devnull.owl.de/~frank/quake_e.html.
  250. They have also ported QuakeWorld, and there is a beta of GLQuake using
  251. Warp3D there now too.  Their version is significantly faster than mine
  252. and has more features.  However the version I tested seemed to have
  253. more bugs (incorrectly placed weapon trails, problems loading certain
  254. saved levels, sometimes missing or invisible enemies, etc) and only
  255. has mono sound.
  256.  
  257.  
  258.  
  259. HISTORY:
  260. --------
  261.  
  262. v0.8    3 Mar 2000
  263.  
  264. Implemented -ahi, stereo 16-bit sound.
  265.  
  266. More changes to PLL code.  Hopefully bus speed detection right for all
  267. versions of both PowerUP and ppclibemu now.
  268.  
  269. Used lots of m68k assembly code from John Selck in 680x0 version,
  270. which is up to 9.2 fps for "timedemo demo2" on 68060/50 now.
  271.  
  272. Miscellaneous speedup optimisations in all versions.
  273.  
  274.  
  275.  
  276. v0.7   19 Feb 2000
  277.  
  278. I introduced a stupid bug in the math routines at the last minute
  279. before uploading v0.6 that made the player virtually uncontrollable in
  280. awinquakeppc.  Fixed.
  281.  
  282.  
  283.  
  284. v0.6   18 Feb 2000
  285.  
  286. Many ELF loaders couldn't load awinquakeppc v0.5 because various
  287. global symbols declared in amiga_socket_lib.s and amigacgxtagfns.s had
  288. no type declared.  Goodness knows why it worked in v0.4 and not in
  289. v0.5.  Anyway, added ".type symbol,@function" declarations to those
  290. files and recompiled.  Also added ".size" directives.
  291.  
  292. Added optimised c2p to 68k version using Aki Laukkanen's
  293. 68060-optimised c2p routine from ADoom.
  294.  
  295. -nocdaudio is no longer required if cdplayer.library fails to open.
  296.  
  297. More changes to PLL code for calculating bus speed.  Now it seems to
  298. work with ppc.library, but still needs -bus with WarpOS + ppclibemu
  299. emulation.
  300.  
  301. Aspect ratio fix accounts for LACE, HIRES and SUPERHIRES in native
  302. modes.
  303.  
  304. Added -directcgx option.  This causes awinquake to render 3D scenes
  305. directly into any gfx-card that supports cybergraphics.  Normally
  306. awinquake renders into fastmem, then copies to the gfx-card with
  307. WritePixelArray8().  On my system, -directcgx is much slower, because
  308. gfx-card VRAM is uncached and Quake renders by bytes (pixels).  Also,
  309. -directcgx flickers like hell, because there is no double-buffering.
  310.  
  311. Increased the maximum allowable resolution from 1280x1024 to
  312. 1600x1280.  Just for fun, try the slow 68k version in a 1600x1280
  313. cybergraphics mode with -directcgx.  You can watch Quake draw
  314. individual polygons.  Turn the 68k caches off for even more
  315. enlightenment as to how Quake works...
  316.  
  317. Inner loop code of awinquakeppc is now compiled with gcc 2.95.2
  318. instead of gcc 2.7.2.1, for a slight speed increase.
  319.  
  320. OS-call cache flushing optimisation tricks with PowerUp speed up
  321. awinquakeppc slightly, hopefully without introducing any bugs.
  322.  
  323. Wrote some hand-optimised PPC assembly code to speed up awinquakeppc
  324. slightly more.  Currently only awinquakeppc uses assembly
  325. optimisations --- awinquakewos and awinquakevbcc still have none.  I
  326. can't directly use the same assembly code in all versions, because
  327. StormC and VBCC have different static variable access conventions to
  328. SAS/C and gcc.
  329.  
  330.  
  331.  
  332. v0.5   30 Jan 2000
  333.  
  334. Memory heap was allocated twice.  Oops.  Fixed.  It should use a lot
  335. less memory now.
  336.  
  337. Added native WarpOS versions awinquakewos and awinquakevbcc compiled
  338. with StormC 4.0 beta and vbcc 0.7 respectively.
  339.  
  340. Added joypad support code and improved mouse control using Jarmo
  341. Laakkonen's source code.
  342.  
  343.  
  344.  
  345. v0.4    7 Jan 2000
  346.  
  347. Should work under Kickstart 3.0 now.
  348.  
  349. Added -mouse and -mousepointer.
  350.  
  351. awinquakeppc should calculate the correct bus speed on PowerUp now.
  352. WarpOS+ppclibemu still often gets it wrong.
  353.  
  354. Now writes config.cfg on exit.
  355.  
  356. Handles slashes and colons in directory names better.
  357.  
  358.  
  359.  
  360. v0.3    4 Jan 2000
  361.  
  362. Fixed the crash that occurred if you don't have cybergraphics.library
  363.  
  364. Added -mem parameter.
  365.  
  366.  
  367.  
  368. v0.2   30 Dec 1999
  369.  
  370. First Aminet release.
  371.  
  372.  
  373.  
  374. THANKS:
  375. -------
  376.  
  377. Thanks to John Carmack and ID Software for one of the best games ever!
  378.  
  379.  
  380.  
  381. Peter McGavin.  (p.mcgavin@irl.cri.nz)
  382.